# 这篇内容我们通过简单的示例来学习如何处理列表的一部分，这在python中称之为切片。
#
# 下面我们通过获取一个成员列表中指定元素的实例来说明如何使用
group members
group = ["张三","jake","rose"]
#group the members range of 0-2
print(groups[0:3])
# 在上述代码中，我们特别注意的是groups[0:3] 的写法，其中0：3分别代表的是从列表第一个元素开始，到第三个元素终止。这样的写法在前面大家也见过，如果没有印象的话，可以回想一下range函数的使用。
#
# 上述代码打印的也是一个列表，不过是group列表的子集，输出大家可以参考以下：
['张三','jake','rose']
# 当然了，大家可以指定任意范围的元素索引来提取我们想要的信息。
#
# 如果，我们没有指定第一个索引位置，会发生什么情况呢？
print(group[:1]);
# 这样的python代码会输出什么内容呢?
['张三']
# 这是我想让大家注意的一点，如果没有指定第一个索引，python会默认从0开始处理列表，那么大家看到这里可能会想到，如果没有指定终止索引呢？
#
# 答案和你们想的一样，如果没有指定最后一个索引，python会从列表末尾终止。
print(group[0:]);
#输出为
['张三','李四','王五']
# 那假如我们指定的列表索引超出了界限，python会如何处理呢？
#
# 假如有如下代码
print(group[0:5])
#会和我们想的一样越界吗
print(group['张三','李四','王五'])
# 没有，python还是正常的打印了整个列表并没有提示有任何的错误。
#
#前面学习过range函数，想必大家对下面的代码应该不陌生吧
#print the members range of 0-2
print(groups[-3:]);
# 这行代码是从group列表的末尾第三个元素开始至列表末尾结束。这点大家想必很容易理解。大家只要记住：负数索引返回的的是距离列表末尾相应距离的元素。
#
# 输出：
['王五', '赵六', '老七']
# 至于如何遍历切片结果，这点参考前面学习过的for循环的使用，下面给一个简单的列子：
#group members
groups = ["张三","李四","王五","赵六","老七"];

#print the members range of 0-2
for member in groups[0:3]:
    print("current member is:" + member);
#输出
current member is:张三
current member is:李四
current member is:王五
# 在很多情况下，在我们的程序中需要对列表进行复制然后创建一个全新的列表。
# 大家可能第一想到的是下面这种写法：
#group members
groups = ["张三","李四","王五","赵六","老七"];

new_groups = groups;

print("groups:");
print(groups);

print("new groups:");
print(new_groups);
# 输出和大家预想的一样，两者的输出是相同的：
groups:
['张三', '李四', '王五', '赵六', '老七']
new groups:
['张三', '李四', '王五', '赵六', '老七']
# 那么，我们突然对new groups列表新增一个成员，两者的输出还会一致吗？
new_groups.append("老八");
# 好了，老八加入了这个成员俱乐部，那么原来的列表应该没有老八这个人吧，我们在打印一下这两个列表：
groups:
['张三', '李四', '王五', '赵六', '老七', '老八']
new groups:
['张三', '李四', '王五', '赵六', '老七', '老八']
# 咦，怎么两个列表都有老八呢？明明只会对新的列表增加了一个人，为什么会对原来的列表产生影响呢？

# 在python中这种赋值语法其实是将变量groups和new_groups 关联在了一起，两者都是指向了同一个列表。
#
# 那么该何如避免这个问题呢？
#
# 切片，上面提到了切片这个概念，通过切片产生了一个新的列表，这就相当于又重新创建了一个列表，这样通过使用切片进行赋值的列表就没有了关联关系，自然不会产生影响。
#group members
groups = ["张三","李四","王五","赵六","老七"];

new_groups = groups[:];
new_groups.append("老八");

print("groups:");
print(groups);

print("new groups:");
print(new_groups);
#输出：
groups:
['张三', '李四', '王五',  '老七']
new groups:
['张三', '李四', '王五', '赵六', '老七', '老八']